package com.holly.unit.deform.context;

import cn.hutool.extra.spring.SpringUtil;
import com.holly.unit.auth.api.SessionManagerApi;
import com.holly.unit.bpmn.activiti.ActivitiOperator;
import com.holly.unit.cache.redis.operator.DefaultStringRedisCacheOperator;
import com.holly.unit.db.api.DbOperatorApi;
import com.holly.unit.deform.service.*;
import com.holly.unit.dict.modular.service.DictService;
import com.holly.unit.es.api.EsApi;
import com.holly.unit.jwt.api.JwtApi;
import com.holly.unit.office.api.OfficeExcelApi;
import com.holly.unit.query.api.QueryApi;
import com.holly.unit.system.api.OrganizationServiceApi;
import com.holly.unit.system.api.UserServiceApi;

/**
 * 类描述: 表单设计器操作上下文
 *
 * @author fxr
 * @version 1.0.0
 * @date 2022/4/5 12:01
 */
public class DeformContext {

    /***
     * EsApi 提供一系列操作ES数据库的方法
     * @return
     */
    public static EsApi esApi() {
        return SpringUtil.getBean(EsApi.class);
    }

    /***
     * WorkflowApi 提供一系列操作工作流的方法
     * @return
     */
    public static ActivitiOperator activitiOperator() {
        return SpringUtil.getBean(ActivitiOperator.class);
    }

    /***
     * QueryApi 提供一系列查询构建器的方法
     * @return
     */
    public static QueryApi queryApi() {
        return SpringUtil.getBean(QueryApi.class);
    }

    /***
     * DeformBaseInfoService 提供一系列操作表单设计器基本方法
     * @return
     */
    public static DeformBaseInfoService deformBaseInfoService() {
        return SpringUtil.getBean(DeformBaseInfoService.class);
    }

    /***
     * DeformDataService 提供一系列表单设计数据操作方法
     * @return
     */
    public static DeformDataService deformDataService() {
        return SpringUtil.getBean(DeformDataService.class);
    }

    /***
     * DeformRouteService 提供一系列表单设计器路由操作方法
     * @return
     */
    public static DeformRouteService deformRouteService() {
        return SpringUtil.getBean(DeformRouteService.class);
    }


    /***
     * DeformTempletService 提供一系列表单设计器模板操作方法
     * @return
     */
    public static DeformTempletService deformTempletService() {
        return SpringUtil.getBean(DeformTempletService.class);
    }

    /***
     * OfficeExcelApi 提供一系列Excel操作方法
     * @return
     */
    public static OfficeExcelApi officeExcelApi() {
        return SpringUtil.getBean(OfficeExcelApi.class);
    }

    /***
     * DeformAuthService 提供一系列表单设计器权限操作方法
     * @return
     */
    public static DeformAuthService deformAuthService() {
        return SpringUtil.getBean(DeformAuthService.class);
    }

    /***
     * DeformUrlAuthService 提供一系列表单设计URL授权操作方法
     * @return
     */
    public static DeformUrlAuthService deformUrlAuthService() {
        return SpringUtil.getBean(DeformUrlAuthService.class);
    }

    /***
     * DbOperatorApi 提供一系列操作数据库方法
     * @return
     */
    public static DbOperatorApi dbOperatorApi() {
        return SpringUtil.getBean(DbOperatorApi.class);
    }

    /***
     * JwtApi 提供一系列的token操作方法
     * @return
     */
    public static JwtApi jwtApi() {
        return SpringUtil.getBean(JwtApi.class);
    }

    /***
     * SessionManagerApi 提供一系列用户会话管理操作方法
     * @return
     */
    public static SessionManagerApi sessionManagerApi() {
        return SpringUtil.getBean(SessionManagerApi.class);
    }


    /***
     * UserServiceApi 提供一系列用户管理服务操作方法
     * @return
     */
    public static UserServiceApi userServiceApi() {
        return SpringUtil.getBean(UserServiceApi.class);
    }

    /***
     * CacheOperatorApi 提供一系列缓存服务操作的方法
     * @return
     */
    public static DefaultStringRedisCacheOperator defaultStringRedisCacheOperator() {
        return SpringUtil.getBean(DefaultStringRedisCacheOperator.class);
    }

    /***
     * OrganizationServiceApi 组织机构提供一系列组织机构的方法
     * @return
     */
    public static OrganizationServiceApi organizationServiceApi() {
        return SpringUtil.getBean(OrganizationServiceApi.class);
    }

    /***
     * 字典业务一系列操作方法
     * @return
     */
    public static DictService dictService() {
        return SpringUtil.getBean(DictService.class);
    }

    /***
     * DesignFormOnlineService 提供一系列Online表单开发操作方法
     * @return
     */
    public static DesignFormOnlineService designFormOnlineService() {
        return SpringUtil.getBean(DesignFormOnlineService.class);
    }

    /***
     * DesignFormOnlineService 提供一系列Online表单开发操作方法
     * @return
     */
    public static DesignFormOnlineFieldService designFormOnlineFieldService() {
        return SpringUtil.getBean(DesignFormOnlineFieldService.class);
    }

    /***
     * DesignFormOnlineService 提供一系列Online表单开发操作方法
     * @return
     */
    public static DesignFormOnlineIndexService designFormOnlineIndexService() {
        return SpringUtil.getBean(DesignFormOnlineIndexService.class);
    }


}
